package com.yootk.action.emp;

import com.yootk.action.abs.AbstractAction;
import com.yootk.vo.Dept;
import com.yootk.vo.Emp;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.servlet.ModelAndView;

import java.util.*;

@Controller
@RequestMapping("/pages/emp/*")
public class EmpAction extends AbstractAction {
    private static final Logger LOGGER = LoggerFactory.getLogger(EmpAction.class) ;
    @PostMapping("add")
    public ModelAndView add_show(@RequestBody Emp emp){
        LOGGER.info("雇员信息：编号：{}，姓名：{}，日期：{}",emp.getEmpno(),emp.getEname(),emp.getHiredate());
        LOGGER.info("部门信息：编号：{}，名称：{}，位置：{}",emp.getDept().getDeptno(),emp.getDept().getDname(),emp.getDept().getLoc());
        return null ;
    }
    @PostMapping("array")
    public ModelAndView array(@RequestBody List<Emp> all) { // 接收一组雇员信息
        for (Emp emp : all) { // 数据迭代
            LOGGER.info("【雇员信息】编号：{}、姓名：{}、雇佣日期：{}、" +
                            "部门编号：{}、部门名称：{}、部门位置：{}",
                    emp.getEmpno(), emp.getEname(), emp.getHiredate(),
                    emp.getDept().getDeptno(), emp.getDept().getDname(), emp.getDept().getLoc());
        }
        return null; // 只关注后台的日志输出
    }
    @GetMapping("get")
    @ResponseBody
    public Object get(){
        return new Emp("7369","张三",new Date(),new Dept(10L,"教育部","深圳")) ;
    }
    @GetMapping("list")
    @ResponseBody
    public Object list() {
        List<Emp> all = new ArrayList<>();
        for (int x = 0 ; x < 3 ; x ++) {
            Emp emp = new Emp("7369" + x, "李兴华 - " + x, new Date(),
                    new Dept(10L, "沐言科技教学研发部", "洛阳"));
            all.add(emp);
        }
        return all;
    }
    @GetMapping("map")
    @ResponseBody
    public Object map() {
        Map<String, Object> map = new HashMap<>();
        map.put("data", new Emp("7369L", "李兴华", new Date(),
                new Dept(10L, "沐言科技教学研发部", "洛阳")));
        map.put("skill", Set.of("Java", "Python", "Golang"));
        return map;
    }
}
